// 基数排序，acm练习风格
// 测试链接 : https://www.nowcoder.com/practice/96c0717e2ed849219748796956291a22
// 请同学们务必参考如下代码中关于输入、输出的处理
// 这是输入输出处理效率很高的写法
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

// 题目没有说数据量，按道理是要说的
// 根据实验，长度500以内够用了
// 如果有一天牛客升级了数据量导致出错
// 把这个值改大即可
const int MAXN = 501;
int arr[MAXN];
int help[MAXN];
// 可以设置进制，不一定10进制，随你设置
const int BASE = 10;
int cnts[BASE];
int n;

// 快读
inline int read()
{
    char ch = getchar();
    int x = 0, f = 1;
    while(ch < '0' || ch > '9')
    {
        if(ch == '-') f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9')
    {
        x = 10 * x + ch - '0';
        ch = getchar();
    }
    return f * x;
}

// 返回number在BASE进制下有几位
int bits(int number)
{
    int ans = 0;
    while(number > 0)
    {
        ++ans;
        number /= BASE;
    }
    return ans;
}

// 基数排序核心代码
// arr内要保证没有负数
// m是arr中最大值在BASE进制下有几位
void radixSort(int bits)
{
    // 理解的时候可以假设BASE = 10
    for(int offset = 1; bits > 0; offset *= BASE, --bits)
    {
        memset(cnts, 0, sizeof cnts);
        for(int i = 0; i < n; ++i)
        {
            ++cnts[(arr[i] / offset) % BASE]; // 数字提取某一位的技巧
        }
        for(int i = 1; i < BASE; ++i) 
        {
            cnts[i] += cnts[i - 1]; // 前缀和
        }
        for(int i = n - 1; i >= 0; --i)
        {
            // 前缀数量分区的技巧
            // 数字提取某一位的技巧
            help[--cnts[(arr[i] / offset) % BASE]] = arr[i];
        }
        for(int i = 0; i < n; ++i) arr[i] = help[i];
    }
}

void sort()
{
    // 如果会溢出，那么要改用long类型数组来排序
    // 找到数组中的最小值
    int mn = arr[0];
    for(int i = 1; i < n; ++i) mn = min(mn, arr[i]);
    int mx = 0;
    for(int i = 0; i < n; ++i)
    {
        // 数组中的每个数字，减去数组中的最小值，就把arr转成了非负数组
        arr[i] -= mn;
        // 记录数组中的最大值
        mx = max(mx, arr[i]);
    }
    // 根据最大值在BASE进制下的位数，决定基数排序做多少轮
    radixSort(bits(mx));
    // 数组中所有数都减去了最小值，所以最后不要忘了还原
    for(int i = 0; i < n; ++i) arr[i] += mn;
}

int main()
{
    n = read();
    for(int i = 0; i < n; ++i) arr[i] = read();
    sort();
    for(int i = 0; i < n; ++i) printf("%d ", arr[i]);

    return 0;
}